package file.it.resource;

import java.io.*;

/**
 * 目标：使用字节流完成对文件的复制操作
 */
public class Test3 {
    public static void main(String[] args) throws Exception {

        try (
                // 1.创建一个字节输入流管道与源文件接通
                InputStream is = new FileInputStream("D:/photos/sb.jpg");

                // 2.创建一个字节输出流管道与目标文件接通
                OutputStream os = new FileOutputStream("C:/data/sb.jpg");

                // 注意：这里只能放置资源对象。（流对象）
                // int age = 21;
                // 什么是资源呢？资源都是会实现AutoCloseable接口。资源都会有一个close方法，并且资源放到这里后
                // 用完之后，会自动调用其close方法完成资源的释放操作

                MyConnection conn = new MyConnection(); // 资源: 资源一般指的是最终实现了AutoCloseable接口
        ) {

            // 3.创建一个字节数组，负责转移字节数据
            byte[] buffer = new byte[1024]; // 1KB

            // 4.从字节输入流中读取字节数据，写出去到字节输出流中。读多少写出去多少
            int len; // 记住每次读取了多少字节
            while ((len = is.read(buffer)) != -1) {
                os.write(buffer, 0, len);
            }
            System.out.println(conn);
            System.out.println("复制完成");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

